const db = require('../db/index');

const myDate = require('../encapsulation/tool/myDate');
const arrMethod = require('../encapsulation/tool/arrMethod');

// 发布投票第一步
exports.addVote = (req, res) => {
	// 查询当前所有用户数量
	const sql = 'select * from user where state<2';
	db.query(sql, (err, results) => {
		if (err) return res.cc(err);
		req.body.vote_not_number = results.length;
		// 添加到投票记录表中
		const sql = 'insert into vote_log set ?';
		db.query(sql, req.body, (err, results) => {
			if (err) return res.cc(err);
			const sql = 'SELECT LAST_INSERT_ID( vote_log_id ) from vote_log';
			db.query(sql, (err, results)=> {
				if (err) return res.cc(err);
				res.send({
					status: 0,
					message: '第一步成功了',
					data: results[results.length-1]
				});
			});
		});
	});
}

// 发布投票第二步
exports.addOption = (req, res) => {
	const arr = arrMethod.mysqlArr(req.body);
	// 添加到选项表中
	const sql = 'insert into vote_option(vote_option_text, vote_log_id) values ?';
	db.query(sql, [arr], (err, results) => {
		if (err) return res.cc(err);
		res.cc('添加成功', 0)
	})
}

// 查询投票
exports.getVote = (req, res) => {
	// 查询记录
	const sql = 'select * from vote_log order by vote_log_id desc';
	db.query(sql, (err, results) => {
		if (err) return res.cc(err);
		let arr = results;
		// 查询选项并添加
		const sql = 'select * from vote_option';
		db.query(sql, (err, results) => {
			if (err) return res.cc(err);
			for (let i = 0 ; i < arr.length; i++){
				arr[i].vote_option = []
				for (let j = 0 ; j < results.length; j++){
					if (arr[i].vote_log_id === results[j].vote_log_id){
						arr[i].vote_option.push(results[j]);
					}
				}
			}
			// 查找员工人数和发布人昵称
			const sql = 'select * from user'
			db.query(sql, (err, results) => {
				if(err) return res.cc(err)
				results.map(item => {
					arr.forEach(arrItem => {
						if(arrItem.vote_creator_id === item.id){
							arrItem.vote_creator_name = item.nick_name
						}
					})
				})
				// 查看该项目的员工是否投票了
				const sql = 'select * from vote_person'
				db.query(sql, (err, results) => {
					if(err) return res.cc(err)
					arr.forEach(item => {
						item.user_state = 1
						item.vote_option.map(optionItem => {
							results.map(resultsItem => {
								if(resultsItem.vote_option_id === optionItem.vote_option_id && resultsItem.user_id === parseInt(req.query.user_id)){
									item.user_state = 0
								}
							})
						})
					})
					res.send({
						status: 0,
						message: '查询成功',
						data: arr
					})
				})
			})
		})
	})
}

// 进行投票
exports.castVote = (req, res) => {
	// 查询对应id得票数
	const sql = 'select * from vote_option where vote_option_id=?';
	db.query(sql, req.body.vote_option_id, (err, results) => {
		if (err) return res.cc(err);
		let vote_option_number = results[0].vote_option_number + 1;
		let vote_log_id = results[0].vote_log_id
		// 更新投票表
		const sql = 'update vote_option set vote_option_number=? where vote_option_id=?';
		db.query(sql, [vote_option_number, req.body.vote_option_id],(err, results) => {
			if (err) return res.cc(err);
			// 添加到对应人员名单里
			const sql = 'insert into vote_person set ? ';
			db.query(sql, req.body, (err, results) => {
				if (err) return res.cc(err);
				// 查询对应投票
				const sql = 'select * from vote_log where vote_log_id=?';
				db.query(sql, vote_log_id, (err, results) => {
					if (err) return res.cc(err);
					const vote_not_number = results[0].vote_not_number - 1;
					// 更新未投票数
					const sql = 'update vote_log set vote_not_number=? where vote_log_id=?';
					db.query(sql, [vote_not_number, vote_log_id], (err, results) => {
						if (err) return res.cc(err);
						// 将该字段最新的数据返回给客户端
						const sql = 'select * from vote_log where vote_log_id=?';
						db.query(sql, vote_log_id,(err, results) => {
							if (err) return res.cc(err);
							let arr = results;
							const sql = 'select * from vote_option where vote_log_id=?';
							db.query(sql, vote_log_id, (err, results) => {
								if (err) return res.cc(err);
								arr[0].vote_option = [];
								for (let i = 0 ; i < results.length; i++){ arr[0].vote_option.push(results[i]); }
								res.send({
									status: 0,
									message: '投票成功',
									data: arr
								})
							})
						})
					})
				})
			})
		})
	})
}

// 删除投票
exports.deleteVote = (req, res) => {
	const sql = 'delete from vote_log where vote_log_id=?'
	db.query(sql, req.body.vote_log_id, (err, results) => {
		if(err) return res.cc(err)
		const sql = 'select * from vote_option where vote_log_id=?'
		db.query(sql, req.body.vote_log_id, (err, results) => {
			if(err) return res.cc(err)
			if(results.length === 0) return res.cc('删除成功', 0)
			let arr = []
			results.map(item => {
				arr.push(item.vote_option_id)
			})
			const sql = 'delete from vote_option where vote_log_id=?'
			db.query(sql, req.body.vote_log_id, (err, results) => {
				if(err) return res.cc(err)
				let ids = ''
				for (var i = 0; i < arr.length; i++) {
					ids += "'" + arr[i] + "'" + ","
				}
				ids = ids.substr(0, ids.length - 1)
				const sql = 'delete from vote_person where vote_option_id in (' + ids + ')'
				db.query(sql, (err, results) => {
					if(err) return res.cc(err)
					res.cc('删除成功', 0)
				})
			})
		})
	})
}

// 发布意见
exports.addIdea = (req, res) => {
	const sql = 'insert into idea_log set ?';
	db.query(sql, req.body, (err, results) => {
		if (err) return res.cc(err);
		res.cc('发布成功', 0);
	})
}

// 查询意见
exports.getIdea = (req, res) => {
	const sql = 'select * from idea_log where idea_delete=0 order by idea_log_id desc';
	db.query(sql, (err, results) => {
		if (err) return res.cc(err);
		let arr = results
		const sql = 'select * from user'
		db.query(sql, (err, results) => {
			if(err) return res.cc(err)
			results.map(userItem => {
				arr.forEach(item => {
					if(userItem.id === item.idea_creator_id){
						item.idea_creator_name = userItem.nick_name
					}
				})
			})
			const sql = 'select * from idea_agree'
			db.query(sql, (err, results) => {
				if (err) return res.cc(err);
				for (let i = 0 ; i < arr.length ; i++) {
					arr[i].idea_agree_person_ids = [];
					for (let j = 0 ; j < results.length; j++ ) {
						if (arr[i].idea_log_id === results[j].idea_log_id) {
							arr[i].idea_agree_person_ids.push(results[j].idea_agree_person_id);
						}
					}
				}
				res.send({
					status: 0,
					message: '查询成功',
					data: arr
				})
			})
		})
	})
}

// 赞同意见
exports.agreeIdea = (req, res) => {
	// 查看此人是否点赞过该评论
	const sql = 'select * from idea_agree where idea_log_id=? and idea_agree_person_id=?';
	db.query(sql, [req.body.idea_log_id, req.body.idea_agree_person_id], (err, results) => {
		if (err) return res.cc(err);
		if (results.length === 1){
			// 已点赞删除记录
			const sql = 'delete from idea_agree where idea_agree_id=?'
			db.query(sql, results[0].idea_agree_id, (err, results) => {
				if(err) return res.cc(err)
				res.cc('已取消点赞')
			})
		} else {
			// 未点赞将意见添加到表中
			const sql = 'insert into idea_agree set ?'
			db.query(sql, req.body, (err, results) => {
				if (err) return res.cc(err)
				res.cc('点赞成功', 0)
			})
		}
	})
}